package com.hopu.mcshipin.util;

import cn.hutool.core.lang.Validator;
import cn.hutool.core.util.StrUtil;
import com.hopu.mcshipin.exception.BusinessException;


/**
 * 参数校验工具类(基于Hutool)
 */
public class ValidationUtil {

    /**
     * 校验用户名
     * @param username 用户名
     */
    public static void validateUsername(String username) {
        if (StrUtil.isBlank(username)) {
            throw new BusinessException(ErrorCode.USERNAME_IS_EMPTY);
        }
        // 使用Hutool校验器检查用户名格式
        if (!Validator.isGeneral(username, 4, 20)) {
            throw new BusinessException(ErrorCode.USERNAME_FORMAT_INVALID);
        }
    }

    /**
     * 校验密码
     * @param password 密码
     */
    public static void validatePassword(String password) {
        if (StrUtil.isBlank(password)) {
            throw new BusinessException(ErrorCode.PASSWORD_IS_EMPTY);
        }
        // 密码长度6-20位，允许字母、数字和特殊字符
        if (password.length() < 6 || password.length() > 20) {
            throw new BusinessException(ErrorCode.PASSWORD_LENGTH_INVALID);
        }
    }


    /**
     * 校验手机号
     * @param phone 手机号
     */
    public static void validatePhone(String phone) {
        if (StrUtil.isNotBlank(phone) && !Validator.isMobile(phone)) {
            throw new BusinessException(ErrorCode.PHONE_FORMAT_INVALID);
        }
    }

    /**
     * 通用非空校验
     * @param object 对象
     * @param errorCode 错误码
     */
    public static void requireNonNull(Object object, ErrorCode errorCode) {
        if (object == null || (object instanceof String && StrUtil.isBlank((String) object))) {
            throw new BusinessException(errorCode);
        }
    }
}